package es.us.isg2;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Jugador {
	/**
	 * @uml.property  name="posicion"
	 * @uml.associationEnd  multiplicity="(1 1)"
	 */
	private Casilla posicion;
	/**
	 * @uml.property  name="nombre"
	 */
	private String nombre;
	/**
	 * @uml.property  name="quesos"
	 * @uml.associationEnd  qualifier="tipo:es.us.isg2.trivial.TipoDePregunta java.lang.Boolean"
	 */
	private Map<TipoDePregunta,Boolean> quesos;
	
	public Jugador(String nombre, Casilla casillaInicial,Collection<TipoDePregunta> temas) {
		posicion = casillaInicial;
		this.nombre = nombre;
		quesos = new HashMap<TipoDePregunta,Boolean>();
		Iterator<TipoDePregunta> itt = temas.iterator();
		while (itt.hasNext()) {
			quesos.put(itt.next(),false);
		}
	}
	
	/**
	 * @return
	 * @uml.property  name="nombre"
	 */
	public String getNombre() {
		return nombre;
	}
	
	/**
	 * @return
	 * @uml.property  name="posicion"
	 */
	public Casilla getPosicion() {
		return posicion;
	}

	/**
	 * @param destino
	 * @uml.property  name="posicion"
	 */
	public void setPosicion(Casilla destino) {
		this.posicion = destino;		
	}
	
	public void ganarQueso(TipoDePregunta tipo) {
		quesos.put(tipo, true);
	}

	public boolean tieneTodosLosQuesos() {
		boolean res = true;
		Iterator<Boolean> itb = quesos.values().iterator();
		while (itb.hasNext() && res) {
			res = itb.next();
		}
		return res;
	}
	
	public String toString() {
		String res = "Jugador: " + nombre;
		res += " ; Quesos: {";
		Iterator<Entry<TipoDePregunta,Boolean>> itq = quesos.entrySet().iterator();
		while (itq.hasNext()) {
			Entry<TipoDePregunta,Boolean> entry = itq.next();
			if (entry.getValue())
				res += entry.getKey() + " ";
		}
		res += "}";
		return res;
	}
}
